﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace QldtSdh.GUI.DaoTao
{
    using BLL;
    using DAL;
    using DAL.Models;
    using GUI.Utils;
    using QldtSdh.GUI.Common;
    using QldtSdh.Utils;

    public partial class FormCongViecBanGiangVien_ChiTiet : QldtSdh.GUI.Common.BaseDialog
    {
        private GiangVien _GiangVien;
        private HocKy _HocKy;
        private bool _TaoMoi;
        private CongViecBanGiangVien _CongViecObject;
        private int _EffectedRecords = 0;
        public int EffectedRecords { get { return _EffectedRecords; } }

        public FormCongViecBanGiangVien_ChiTiet(GiangVien giangVien, HocKy hocKy)
        {
            InitializeComponent();

            _GiangVien = giangVien;
            _HocKy = hocKy;
            _TaoMoi = true;

            _CongViecObject = new CongViecBanGiangVien()
            {
                MaGiangVien = giangVien.MaGiangVien,
                MaHocKyGUID = hocKy.MaHocKyGUID,
                TuNgay = DateTime.Now,
                DenNgay = DateTime.Now,
                Buoi = 1 | 2 | 4,
                ThuTrongTuan = 2 << BizThoiKhoaBieu.GetIndexFromDOW(DateTime.Now.DayOfWeek),
                NoiDungBan = ""
            };
            DisplayObjectToGUI();
        }

        private void DisplayObjectToGUI()
        {
            var x = _CongViecObject;
            txtMaGiangVien.Text = _GiangVien.GiangVienDesc;
            dtpTuNgay.Value = x.TuNgay.Date;
            dtpDenNgay.Value = x.DenNgay.Date;
            chkBuoiSang.Checked = x.BanBuoiSang;
            chkBuoiChieu.Checked = x.BanBuoiChieu;
            chkBuoiToi.Checked = x.BanBuoiToi;
            chk2.Checked = x.BanThu2;
            chk3.Checked = x.BanThu3;
            chk4.Checked = x.BanThu4;
            chk5.Checked = x.BanThu5;
            chk6.Checked = x.BanThu6;
            chk7.Checked = x.BanThu7;
            chk8.Checked = x.BanThu8;
            txtNoiDungBan.Text = x.NoiDungBan;
        }

        public FormCongViecBanGiangVien_ChiTiet(GiangVien giangVien, HocKy hocKy, CongViecBanGiangVien x)
            : this(giangVien, hocKy)
        {
            _CongViecObject = x;
            _TaoMoi = false;

            DisplayObjectToGUI();
        }

        private void btnDongY_Click(object sender, EventArgs e)
        {
            #region Thu thập yêu cầu
            var maGiangVien = _GiangVien.MaGiangVien;
            var maHocKyGUID = _HocKy.MaHocKyGUID;
            var tuNgay = dtpTuNgay.Value.Date;
            var denNgay = dtpDenNgay.Value.Date;
            var buoi = 0;
            buoi += chkBuoiSang.Checked ? CongViecBanGiangVien.BuổiSáng : 0;
            buoi += chkBuoiChieu.Checked ? CongViecBanGiangVien.BuổiChiều : 0;
            buoi += chkBuoiToi.Checked ? CongViecBanGiangVien.BuổiTối : 0;
            var thuTrongTuan = 0;
            thuTrongTuan += chk2.Checked ? CongViecBanGiangVien.Thứ_2 : 0;
            thuTrongTuan += chk3.Checked ? CongViecBanGiangVien.Thứ_3 : 0;
            thuTrongTuan += chk4.Checked ? CongViecBanGiangVien.Thứ_4 : 0;
            thuTrongTuan += chk5.Checked ? CongViecBanGiangVien.Thứ_5 : 0;
            thuTrongTuan += chk6.Checked ? CongViecBanGiangVien.Thứ_6 : 0;
            thuTrongTuan += chk7.Checked ? CongViecBanGiangVien.Thứ_7 : 0;
            thuTrongTuan += chk8.Checked ? CongViecBanGiangVien.Thứ_8 : 0;
            var noiDungBan = txtNoiDungBan.Text.Trim();
            #endregion

            try
            {
                if (_TaoMoi)
                    BizCongViecBanCuaGiangVien.Insert(maGiangVien, maHocKyGUID, tuNgay, denNgay, buoi, thuTrongTuan, noiDungBan);
                else
                    BizCongViecBanCuaGiangVien.Update(_CongViecObject.CongViecBanGiangVienGUID, maGiangVien, maHocKyGUID, tuNgay, denNgay, buoi, thuTrongTuan, noiDungBan);
                _EffectedRecords++;
                this.Close();
            }
            catch (Exception exc)
            {
                string msg = _TaoMoi ? "Không ghi nhận công việc bận được." : "Không cập nhật công việc bận được";
                msg += "\nChi tiết lỗi: " + exc.Message;
                DialogUtils.ShowErrorWithDefaultTitle(msg);
            }
        }
    }
}
